Nacos权重算法

权重算法

通过学习Nacos,在nacos中源码发现NamingService.selectOneHealthyInstance的权重算法。

基础含义
权重是一个相对的概念,是针对某一指标而言。某一指标的权重是指该指标在整体评价中的相对重要程度。

如:学生期末总评是对学生平时成绩,期中考成绩,期末考成绩的综合评价,但是这三个成绩所占期末总评的成绩的比重不一样。若平时成绩占30%,期中考成绩占30%,期末考成绩占40%,那么期末总评=平时成绩0.3+期中考成绩0.3+期末考成绩0.4。
  再打个比方说, 一件事情, 你给它打100分, 你的老板给它打60分, 如果平均, 则是(100+60)/2=80分. 但因为老板说的话分量比你重, 假如老板的权重是2, 你是1, 这时求平均值就是加权平均了, 结果是(100
1 + 602)/(1+2)=73.3分, 显然向你的老板那里倾斜了。假如老板权重是1,你的权重是3,结果是(1003+60*1)/(1+3)=90。这就是根据权重的不同进行的平均数的计算,所以又叫加权平均数

在源码中,我们发现 的方法是 refresh()以及randomWithWeight()

    protected static Instance getHostByRandomWeight(List<Instance> hosts) {
   
        LogUtils.NAMING_LOGGER.debug("entry randomWithWeight");
        if (hosts != null && hosts.size() != 0) {
   
            LogUtils.NAMING_LOGGER.debug("new Chooser");
            List<Pair<Instance>> hostsWithWeight = new ArrayList();
            Iterator var2 = hosts.iterator();

            while(var2.hasNext()) {
   
                Instance host = (Instance)var2.next();
                if (host.isHealthy()) {
   
                    hostsWithWeight.add(new Pair(host, host.getWeight()));
                }
            }

            LogUtils.NAMING_LOGGER.debug(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值